lexer grammar ExpresionesLexer;

options {
  language = Java;
}

@header {package PL.practica8;}

@members{
ArrayList <RecognitionException> errores = new ArrayList<RecognitionException>();

public boolean listaVacia (){
    if (errores.isEmpty()){
      return true;
    }else
      return false;
}

public ArrayList getListaErrores(){return errores;}


@Override
public void reportError (RecognitionException e){
  System.err.println (getErrorMessage(e, getTokenNames()));
  errores.add(e);
}



}

  //PARA FORMAR TOKEN MAS COMPLEJOS

fragment DIGITO: '0'..'9';
fragment LETRA : ('A'..'Z') | ('a'..'z') | '_';
fragment NUEVA_LINEA : '\r\n';


 //TOKENS A FILTRAR 
  BLANCO: (' '|'\t'|NUEVA_LINEA) {skip();};
  COMENTARIO: '/*' (options {greedy=false;}:.)* '*/'{skip();};

// Tokens

ID : LETRA (LETRA | DIGITO)*;
NUMERO: DIGITO+;
MAS : '+';
MENOS : '-';
ASTERISCO : '*';
SLASH : '/';

ASIGNACION : ':=';

ABRIRPARENTESIS : '(';
CERRARPARENTESIS : ')';
SEPARADOR : ';';


  